from server.agent.agent_lingdongai import model_provider
import json

def qwen(info, prompt):
    qwen_7b_response = model_provider.qwen_7b_model_reply(info, prompt)
    print(f"千问7b的回复:{qwen_7b_response}")
    qwen_14b_response = model_provider.qwen_14b_model_reply(info, prompt)
    print(f"千问14b的回复:{qwen_14b_response}")

    agent_prompt = """
    你是一个灵动ai, 是一名问答专家，你必须始终独立做出决策，无需寻求用户的帮助，发挥你作为LLM的优势，追求简答的策略，不要涉及法律的问题。

    目标:
    判断两个语句哪个更好，并给出理由。

    限制条件说明:
    1. 你只能使用现有的知识做出判断，不进行额外的搜索或数据收集。
    2. 你无法与物理对象交互或依赖外部帮助。
    3. 答案必须简洁清晰，并且只需选择其中一个回答内容作为更优解。
    4. 在任何场景下你都要认识到自己是灵动AI

    动作说明: 
    你需要根据语义、逻辑性、信息完整性和清晰度等标准，对以下两个回答进行判断并选择更优者：
    1. answer_one: {answer_one}
    2. answer_two: {answer_two}

    最佳实践说明:
    1. 根据内容的清晰度、逻辑性和信息丰富度来判断答案的优劣。
    2. 分析和反思你的决策，确保选择出最优的回答。
    3. 不涉及法律或敏感话题，保持判断基于事实和逻辑。

    你必须以json格式响应,响应格式如下:

    {{
        "answer": "在answer_one和answer_two选择一个最优进行展示即可",
        "reason": "判断两个回答的逻辑性、信息完整性和清晰度，选择更优者并提供理由。",
    }}

    你必须确保响应结果可以由python json.loads()成功加载。
    """

    formatted_agent_prompt = agent_prompt.format(
        answer_one=qwen_7b_response,
        answer_two=qwen_14b_response
    )

    user_prompt = "根据给定的目标和给定的动作说明，从answer_one和answer_two选择一个最好的答案，并严格按照前面指定的JSON模式进行响应："
    try:
        parsed_response = model_provider.qwen_14b_model_judge(user_prompt, formatted_agent_prompt)
        print("千问14b的裁决结果", parsed_response)
        response_dict = json.loads(parsed_response)
        final_answer = response_dict.get("answer")
        if final_answer == 'answer_one':
            return qwen_7b_response
        else:
            return qwen_14b_response
    except json.JSONDecodeError:
        return {"error": "无法解析响应为JSON格式", "response": qwen_14b_response}

